/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.nextel.project.stock;

import com.nextel.project.Configuracion;
import com.nextel.project.dao.HttpControl;
import com.nextel.project.dao.XMLDAO;
import com.nextel.project.pedido.bean.ArticuloBean;
import com.nextel.project.pedido.bean.ArticuloPorNombreBean;
import com.nextel.project.pedido.mvc.MVCProductoBusqueda;
import com.nextel.project.pedido.mvc.MVCProductoResultado;
import com.nextel.project.pedido.mvc.MVCResultadoProductoOnline;
import com.nextel.project.pedido.rms.RMSArticuloPorNombre;
import com.nextel.project.stock.bean.StockDetalleBean;
import com.nextel.project.pedido.ControlPedido;
import com.nextel.project.stock.mvc.MVCStock;
import com.nextel.project.stock.rms.RMSStock;
import com.nextel.project.usuario.ControlUsuario;
import org.kxml2.io.KXmlParser;
import pe.com.nextel.main.ControlBase;
import com.nextel.project.pedido.rms.RMSArticulo;
import com.nextel.project.pedido.rms.RMSArticuloPorCodigo;
import pe.com.nextel.idioma.IdiomaManager;
import pe.com.nextel.util.List;

/**
 *
 *  
 */
public class ControlStock extends ControlBase {

    private static final ControlStock control = new ControlStock();
    public final MVCStock mvcStock = new MVCStock();
    private byte busquedaMVC = 5; // stock 

    private byte busquedaMVCLinea = 6; // stock en linea

    private byte currentBusquedaMVC = 5; // por defecto el currentBusqueda es es stock

    public StockDetalleBean currentStock;
    public final MVCProductoResultado mvcProductoResultado = new MVCProductoResultado();
    public final MVCProductoBusqueda mvcProductoBusqueda = new MVCProductoBusqueda();
    public final MVCResultadoProductoOnline mvcResultadoOnline = new MVCResultadoProductoOnline();
    public final RMSArticuloPorNombre rmsArticuloPorNombre = new RMSArticuloPorNombre();
    public final RMSStock rmsStock = new RMSStock();
    public final RMSArticulo rmsArticulo = new RMSArticulo();
    public final RMSArticuloPorCodigo rmsArticuloPorCodigo = new RMSArticuloPorCodigo();
    public List curreListaPro;

    private ControlStock() {
    }

    public static ControlStock getInstance() {
        return control;
    }

    public void buscarStockCodigoOnline(String codigo, byte newBusquedaMVC) {
        try {

            ControlStock.getInstance().currentStock = null;
            ArticuloBean articulo = new ArticuloBean();
            articulo.setCodigo(codigo);
            //System.out.println("Codigo= " + codigo);

            // actualizamos el currentBusquedaMVC con el actual enviado por Stock en linea, o agregar/stock de producto pedido 
            currentBusquedaMVC = newBusquedaMVC;

            getMensajeHttp().setUrl(Configuracion.URL_STOCK);
            getMensajeHttp().setMensaje(articulo.writeXML());

            System.out.println("url =" + Configuracion.URL_STOCK);
            System.out.println("mensaje =" + new String(getMensajeHttp().getMensaje()));

            HttpControl.getInstance().setProceso(HttpControl.getInstance().PRCHTTP_STOCK);
            iniciarConexionHTTP();

        } catch (Exception e) {
            e.printStackTrace();

            showMensaje(IdiomaManager.getInstance().getMensaje(IdiomaManager.JAVA_SIN_COBERTURA_CONSLTA), ControlUsuario.getInstance().mvcMenu.showScreen());//"Zona sin cobertura, intente realizar la consulta mas tarde"

        }
    }

    public void buscarProOnline(String nombre, byte newBusquedaMVC) {
        try {

            ControlStock.getInstance().currentStock = null;
            ArticuloBean articulo = new ArticuloBean();
            articulo.setNombre(nombre);
            //System.out.println("nombre= " + nombre);

            // actualizamos el currentBusquedaMVC con el actual enviado por Stock en linea, o agregar/stock de producto pedido 
            currentBusquedaMVC = newBusquedaMVC;

            getMensajeHttp().setUrl(Configuracion.URL_STOCK);
            getMensajeHttp().setMensaje(articulo.writeXML());

            System.out.println("url =" + Configuracion.URL_STOCK);
            System.out.println("mensaje =" + new String(getMensajeHttp().getMensaje()));

            HttpControl.getInstance().setProceso(HttpControl.getInstance().PRCHTTP_STOCK_NOMBRE);
            iniciarConexionHTTP();

        } catch (Exception e) {
            e.printStackTrace();

            showMensaje(IdiomaManager.getInstance().getMensaje(IdiomaManager.JAVA_SIN_COBERTURA_CONSLTA), ControlUsuario.getInstance().mvcMenu.showScreen());//"Zona sin cobertura, intente realizar la consulta mas tarde"

        }

    }

    public void procesarStock(ArticuloPorNombreBean articuloPorNombre) {
        System.out.println("Ingresa Procesar Stock");
        try {
            clear();

            ArticuloBean articulo = new ArticuloBean();
            articulo.setNombre(articuloPorNombre.getNombreArticulo());

            getMensajeHttp().setUrl(Configuracion.URL_STOCK);
            getMensajeHttp().setMensaje(articulo.writeXML());
            System.out.println("url =" + Configuracion.URL_STOCK);
            System.out.println("mensaje =" + new String(getMensajeHttp().getMensaje()));

            HttpControl.getInstance().setProceso(HttpControl.getInstance().PRCHTTP_STOCK);

            iniciarConexionHTTP();

        } catch (Exception e) {
            e.printStackTrace();
            showError("Error : " + e, ControlUsuario.getInstance().mvcMenu.showScreen());
        }

    }

    public void procesarStockOnLine(KXmlParser xml) {

        System.out.println("procesarStockOnLine");
        try {
            currentStock = XMLDAO.getInstance().parseXMLStock(xml);

            if (currentStock != null) {

                // si el flujo inicia desde stock en linea
                if (currentBusquedaMVC == busquedaMVC) {
                    setCurrent(mvcStock);
                } else { // si el flujo inicia desde producto pedido agregar stock
                    ControlPedido.getInstance().agregarProductoXBusquedaStock(currentStock.codigoproducto, currentStock.stock);
                }

            } else {
                showError(IdiomaManager.getInstance().getMensaje(IdiomaManager.JAVA_ARTICULO) + " " + IdiomaManager.getInstance().getMensaje(IdiomaManager.JAVA_NOEXISTE), ControlStock.getInstance().mvcProductoBusqueda.showScreen());//El Art\u00EDculo no existe

            }


        } catch (Exception e) {
            showError(e + "", ControlUsuario.getInstance().mvcMenu.showScreen());
        }
    }

    public void procesarStockNombreOnLine(KXmlParser xml) {

        System.out.println("procesarStockNombreOnLine");

        try {

            curreListaPro = XMLDAO.getInstance().parseXMLStockNombre(xml);

            if (curreListaPro != null && curreListaPro.size() > 0) {
                mvcResultadoOnline.setBusquedaMVC(currentBusquedaMVC);
                setCurrent(mvcResultadoOnline);
            } else {
                showError(IdiomaManager.getInstance().getMensaje(IdiomaManager.JAVA_ARTICULO) + " " + IdiomaManager.getInstance().getMensaje(IdiomaManager.JAVA_NOEXISTE), ControlStock.getInstance().mvcProductoBusqueda.showScreen());
            }


        } catch (Exception e) {
            showMensaje(e + "", ControlUsuario.getInstance().mvcMenu.showScreen());
        }
    }

    public byte getBusquedaMVC() {
        return busquedaMVC;
    }

    public byte getBusquedaMVCLinea() {
        return busquedaMVCLinea;
    }

    public void setBusquedaMVC(byte busquedaMVC) {
        this.busquedaMVC = busquedaMVC;
    }

    public void clear() {
        if (curreListaPro != null) {
            curreListaPro.clear();
            curreListaPro = null;
        }
    }
}
